Systems and methods for retrieving data

ABSTRACT

A system and method for obtaining information responsive to a legal discovery request directed at an enterprise having a plurality of databases that potentially include information responsive to the legal discovery request, including structured databases and at least one unstructured database. A plurality of taxonomies are provided, each of which describes a structure of one of the structured databases. An ontology is provided that describes data relationships between the databases. A native application is identified, which is configured to access at least one but not all of the databases associated with the enterprise. The native application is modified to include search functionality for accessing all of the databases associated with the enterprise. A request is received from the user, via the modified native application, to search the plurality of databases associated with the enterprise for information responsive to the legal discovery request. Information included in the request, the ontology and the taxonomies are then used to search the plurality of databases associated with the enterprise. A list of search results responsive to the search request is presented with the modified native application. In response to a user selection of a search result from the list, an application required to view the selected search result is automatically launched if the modified native application lacks functionality required to display the selected search result.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application is a divisional of and claims priority under 35U.S.C. §120 to U.S. patent application Ser. No. 14/246,730, filed Apr.7, 2014 entitled “Systems and Methods for Retrieving Data,” the contentsof which are incorporated herein in their entirety by reference, whichis a divisional of and claims priority under 35 U.S.C. §120 to U.S.patent application Ser. No. 13/291,778, filed on Nov. 8, 2011 entitled“Systems and Methods for Retrieving Data,” the contents of which areincorporated herein in their entirety by reference, which is adivisional of and claims priority under 35 U.S.C. §120 to U.S. patentapplication Ser. No. 12/322,534, filed on Feb. 3, 2009 entitled “Systemsand Methods for Retrieving Data,” the contents of which are incorporatedherein in their entirety by reference, which is a continuation of andclaims priority under 35 U.S.C. §120 to U.S. patent application Ser. No.11/473,542, filed on Jun. 22, 2006, entitled “Systems and methods forretrieving data,” now abandoned, which claims priority under 35 U.S.C.§119(e) to U.S. Provisional Application No. 60/692,987, filed on Jun.22, 2005, entitled “ARK System, Including Features and FunctionsThereof,” incorporated herein by reference in its entirety.

BACKGROUND

Today's enterprises that must swiftly and decisively react to demandsfor data due to regulations, legal entanglements, or for mattersrequiring precise, select business intelligence data. Among otherthings, today's enterprises often require strategic targeted informationdeployment that enables precision situational awareness during evolvingtactical events requiring rapid and decisive action. When the need forsuch information arises, the information needs to be identified andprovided to the locations and persons who require it without a fog ofextraneous information.

The distinction between the three terms—data, information and knowledgeis relevant to establish a common understanding of terms and conceptsused in knowledge control. First, data represents facts, parameters orstatistics that can be analyzed to produce information. Information isdata related to a particular context that creates meaning. In otherwords, data represents facts and becomes information when embedded in acontext of relevance to a recipient. In contrast to data that can becharacterized as a property of things, knowledge is a property of agents(people or computer systems) predisposing them to act in particular wayin circumstances defined by the context.

Knowledge Management (KM) is about the protection, development andexploitation of knowledge assets. KM encompasses theories, models,processes and tools that support the efficient and effective evaluation,acquisition, dissemination, development and exploitation of knowledgeresources in organizational processes and decision making.

Knowledge engineering is the use of information assets regardingsituations, users, products and technologies that an organization owns(or needs to develop as part of its strategic plan) and then uses toimplement organizational processes efficiently and effectively.

Knowledge Engineering Systems and Tools provide the means of combiningindividuals' knowledge in the pursuit of personal and organizationalobjectives. In the simplest form, knowledge engineering supportsperson-to-person and group-to-group communications resulting in thedevelopment of new knowledge via integration. These more advancedcomputer collaboration and data sharing methodologies can create a leveland quality of exchange not normally achievable within the conventionaldata-sharing environment.

Enterprises are caught in the middle of explosions with respect togovernment regulations, litigation, and data to be managed, all of whichare occurring simultaneously. These intertwined issues require a levelof knowledge, information and data management not formally required forday-to-day business at a company. In order to meet these challenges, acompany must utilize resources at their highest efficiency and selecttools to readily manage, engineer and integrate the data of theenterprise into a knowledge solution. The present invention addressesshortcomings in existing knowledge management solutions, and providestoday's companies with tools useful for overcoming current knowledgemanagement challenges.

SUMMARY OF THE INVENTION

The present invention is directed to a system and method for improvingdata availability in a network by fragmenting data across network nodes.The method includes the step of fragmenting the data across nodes in thenetwork in order to increase a likelihood that the data will beavailable irrespective of a combination of nodes that are connected tothe network at any given time. In the disclosed method and system, eachfragment of data includes a header with control information thatspecifies how the fragment connects with other fragments stored in thenetwork.

In accordance with another aspect, the present invention is directed asystem and method for obtaining information responsive to a legaldiscovery request directed at an enterprise. The legal discovery requestcorresponds to a document subpoena directed to the enterprise or arequest for production of documents served on the enterprise inlitigation. A plurality of databases is associated with the enterprise.The databases potentially include information responsive to the legaldiscovery request, and include a plurality of structured databases andat least one unstructured database. A plurality of taxonomies areprovided, each of which describes a structure of one of the structureddatabases. An ontology is provided, based at least in part on thetaxonomies, that describes data relationships between the plurality ofdatabases associated with the enterprise. A native application isidentified, which is configured to access at least one but not all ofthe plurality of databases associated with the enterprise. The nativeapplication is modified to include search functionality for accessingall of the plurality of databases associated with the enterprise. Arequest is received from the user, via the modified native application,to search the plurality of databases associated with the enterprise forinformation responsive to the legal discovery request. Informationincluded in the request, the ontology and the taxonomies are then usedto search the plurality of databases associated with the enterprise. Alist of search results responsive to the search request is presented tothe user with the modified native application. In response to a userselection of a search result from the list, an application required toview the selected search result is automatically launched if themodified native application lacks functionality required to display theselected search result.

In accordance with another aspect, the present invention may beimplemented in the context of a software application that is currentlyavailable in a current version and which was previously available in anold version, where the current version of the software stores data in acurrent data storage format and the old version of the softwarepreviously stored in an old data storage format which is different fromthe current data storage format. A data metamorphosis system and methodin accordance with the present invention is used in this context tosupport usage of data stored in the old data storage format with thecurrent version of the software. In accordance with the invention, anXML (eXtended Markup Language) definition is provided for each of aplurality of object classes used to store data in the old data storageformat and the new data storage format, and data format rules areprovided for each XML definition. When the current version of thesoftware recalls data in the old data storage format, at least some ofthe XML definitions and format rules are used to dynamically convert thedata in the old storage format to the current data storage format,thereby allowing usage of the data in the old storage format by thecurrent version of the software.

In accordance with a still further aspect, the present invention isdirected to a system and method of providing a data collaborationenvironment that changes dynamically based on the occurrence of eventsexternal to the data collaboration environment. The collaborationenvironment is defined to include roles, activities and external eventspecifications. Each role defines data access privileges granted to auser during a session, each activity defines with whom the user canshare data, and each external event specification defines an eventexternal to the collaboration environment which must occur before anactivity is permitted for a defined role during a session. Data sharingprivileges granted to a user change dynamically in response to theoccurrence of an external event identified in one of the definedexternal event specifications.

In accordance with yet a further aspect, the present invention isdirected to a system and method for collecting and retrieving data foran enterprise with a plurality of databases including a plurality ofstructured databases and at least one unstructured database. A pluralityof taxonomies is provided, each of which describes a structure of one ofthe structured databases. An ontology is provided, based at least inpart on the taxonomies, that describes data relationships between theplurality of databases of the enterprise. A software agent is associatedwith each of the plurality of databases of the enterprise. Each softwareagent uses information included in a search request, the ontology andthe taxonomies to search an associated database and generate searchresults. Each software agent duplicates and archives data retrieved fromthe associated database based on the search results, and wraps theretrieved data with a standardized object format that facilitates datatransformation and secure access of the retrieved data at a field level.Each software agent also logs events that occur with respect to anapplication that corresponds to the database associated with thesoftware agent. The events logged by the software agent include, forexample, server status, server operations performed, and network status.

In accordance with another aspect, the present invention is directed toa network having a plurality of nodes, where nodes enter and exit thenetwork in a manner that is unpredictable. Data availability is improvedin the network by fragmenting data across the network nodes in order toincrease a likelihood that the data will be available irrespective of acombination of nodes that are connected to the network at any giventime. Each fragment of data includes a header with control informationthat specifies how the fragment connects with other fragments stored inthe network.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow diagram depicting knowledge flow or data flow throughthe repository of the present invention.

FIG. 2 is a block diagram showing program components and logical storageareas used for implementing the search technology of the presentinvention.

FIGS. 3A-B are flow diagrams illustrating steps performed by the searchtechnology of the present invention.

FIG. 4 is an exemplary screen shot illustrating a native applicationwhich has been modified to include a Search Interface for accessing thesearch functionality of the present invention.

FIG. 5 is a further exemplary screen shot illustrating a nativeapplication which has been modified to include the Search Interface foraccessing the search functionality of the present invention.

FIG. 6 is a still further exemplary screen shot illustrating a nativeapplication which has been modified to include the Search Interface foraccessing the search functionality of the present invention.

FIG. 7 is a graphical user interface for mapping data between a currentversion of a software application which stores data in a current datastorage format and an old version of the software which previouslystored the data in an old data storage format.

FIG. 8 is a further example of the graphical user interface for mappingdata between a current version of a software application which storesdata in a current data storage format and an old version of the softwarewhich previously stored the data in an old data storage format.

FIG. 9 is a graphical user interface depicting certain core functionsthat the user can select in order to map data between a current versionof a software application which stores data in a current data storageformat and an old version of the software which previously stored thedata in an old data storage format.

FIG. 10 is a graphical user interface depicting a user-defined function(created from the core functions of FIG. 9) developed by a user formapping data between a current version of a software application whichstores data in a current data storage format and an old version of thesoftware which previously stored the data in an old data storage format.

FIG. 11 is a graphical user interface depicting a visual functionbuilder for mapping data between a current version of a softwareapplication which stores data in a current data storage format and anold version of the software which previously stored the data in an olddata storage format.

FIG. 12 depicts an XML Schema generated using the user-interface shownin FIGS. 7-11.

FIG. 13 is a block diagram showing the components of a data collectoragent of the present invention.

FIGS. 14A-B are flow diagrams illustrating steps performed by the datacollector agent of the present invention.

FIG. 15 is a block diagram illustrating the object transmission formatused by the data collector agent for transmitting information.

FIG. 16 is a flow diagram illustrating steps performed for fragmentingdata in order to improve availability in accordance with the presentinvention.

FIG. 17 is a block diagram illustrating a fragmented object store headerformat, in accordance with the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS A. Overview

In one embodiment, the present invention is implemented as anobject-oriented, agent-based scalable digital repository that creates astorage virtualization layer over any combination of storage devices,databases or other knowledge sources. The invention combines aspects ofrelational, object-oriented and XML databases to create a contentintegrating repository. The invention uses data mining methods andgraphical interface tools, and interfaces with most disparate enterprisedata sources requiring only point-and-click methods during installation.Other ‘content integrating’ knowledge managers require substantial entryof SQL code and XML in order to accomplish the connection to theenterprises' disparate data sources.

Certain embodiments of the present invention also include the capabilityto dynamically metamorphose data between storage locations within therepository or upon retrieval from the repository to an application. Datais stored in an open format and searchable metadata indices areautomatically generated for all data inserted into the repository. Theindices can be stored separately from the data and can be interfaced toarchive librarian utilities to manage and control both on-line andoff-line data.

Existing data may be made accessible to the present invention bydescribing the format and structure of the data via XML oriented methodsand then having the invention scan and build metadata indices. New datamay be inserted into the repository via API calls or using a utilityprogram that pulls data directly from the data source without alteringexisting programs.

Policy Templates control the metadata index content and determine wherea particular data class will be stored within the repository. Supportfor Information Lifecycle Management and Digital Rights Management areprovided in certain embodiments.

The software of the present invention preferably includes the followingfunctionality:

1. The software supports interfaces to enterprise databases andapplications, plus web service middleware such as Web Sphere.

2. The software binds tightly with applications. This ability isimportant to compliance-oriented solutions or to solutions wherecreations of an audit trail and secure storage on data is required. Thisis performed via a module that binds tightly to the data-sourceapplication (such as an Exchange Mail Server) and records all activityof the server as well all executed data transactions.

3. The software preferably includes an auto-archiving ability. Throughpolicy definition, data can be automatically moved off-line or to otherstorage locations. As time passes some data no longer is actively usedin the enterprise. This data is archived or placed on storage that nolonger allows modification of the data. This media can be, but is notlimited to, certain types of disk drives or tape storage. The softwareallows the data to be moved to off-line storage while maintainingmetadata indices online with the location of all the data. Off-linerefers to storage media that requires human or mechanical interventionin order to access the data via means of a computer (tape stored on ashelf must be mounted in a tape drive by an operator). This maintainsdatabase performance and levels and reduces resource utilization asinformation accumulates. Compliance data may be moved offline, unlessused to support the findings of an audit, after, e.g., a pre-set periodof time such as three years, but be able to be located on-line for alonger period, e.g., seven years (per Sarbanes-Oxley and SEC Rule 17).The software allows the data to be moved to off-line storage whilemaintaining the metadata indices online with the location of all thedata. This is performed without explicit user action via policy. Thesoftware also supports the ‘marking’ of audit/case support informationcausing it to remain online per compliance requirements so that it canbe easily is retrieved as supporting information.

4. The software requires no changes to existing data sources orapplications for their integration into the repository used by thepresent invention.

5. The software preferably meets the stringent requirements of the rulesand regulations recently established for compliance with Sarbanes-Oxley,HIPPA, SEC and other regulators. In one embodiment, the software offersan auditable, secure chain of evidence from data generation at the datasource to destruction of the data per policy. The data is always storedin the archive in the original data format. The software preferablysupports various aspects of compliance support, including the ability toextend the on-line and destruction times of selected data items perregulations should they support audit findings. In order to accomplishthese objectives, the software uses separate meta-data indices from thedata per requirements, and provides a packaging function that will copythe metadata and source data to a specified destination (CD-ROM, DVD,Disk Drive, etc.) with (optionally) a search engine to aid the receiverof the knowledge in processing of the data.

6. The software supports Digital Rights Management (DRM) of the datadeposited in its repository. Policies are used to control theapplication of where and how DRM is applied within the repository. Thesoftware also preferably supports use of the XML standards for DigitalRights Management including (i) DPRL—Digital Property Rights Language,(ii) XrML—Extensible Rights Markup Language, and (iii) XACML—ExtensibleAccess Control Language.

7. The software supports packaged and custom applications, databases(Oracle, DB2, SQL Server, Informix, and Sybase), servers and storageclasses (SAN/DAS. CAS. Tape), and is configurable for single companies,multiple divisions, multinational organizations, or ASPs supporting anycombination of organizational types. The software includes policies andtemplates that may be configured to control each organizational unit'sstorage affinity and retention periods separately or in an aggregateform. The software also interfaces transparently with collaborationsoftware such as Lotus Notes and Microsoft Exchange.

8. The software is based on a Highly Available Architecture (HAA) thatassures data being deposited or withdrawn from the repository isdelivered and correct. Automatic synchronization and healing ofvirtualized storage areas is automatically performed per policies andrules after a partitioned network is healed.

9. The software enables the transparent integration of data from diverseand disparate sources.

10. The software is based on a Hierarchical Index Architecture that canhandle any data type and any number of entries. This is enabled by usinga hierarchy in the index structure that allows a distributed method forthe index. The index or metadata can be replicated like data in adatabase, and assigned affinity to geographical locations or logicallocations. This allows an index to be generated near the data source andthen ‘distributed’ for search operations via the network according topolicy. The index can be merged into a central index or intelligentlysummed to allow the rapid locating of those distributed data sourceswhich contain items of interest to be recalled.

11. The software supports policy definition for retention and has theability to manage data from non-structured sources such as email andInstant Messaging also via policy. Any source of data (documentscanners, fiche readers, 5ESS switch, etc.) can become an informationprovider to the repository of the present invention.

12. The software provides a unified view of repository data growth forthe monitoring and control of the all storage areas and types that makeup the repository. Views by location, data classes, storage type, etc.are possible. An added feature is to create knowledge relationshipsbased upon chained events. This allows the creation of alerts or otherdefined actions that require correlation of a complex series of events.For example, a keyword match of selected words in an email, followed bya phone call to a particular number, then ending with a stock tradecould be a possible alert. The software provides the ability forcharge-back information to be supplied to budgetary programs andapplications.

13. The software has a language semantic engine that improves the‘fuzzy’ search results beyond the stemming methods used in other searchprocessing engines. The software utilizes an analytic engine thatemploys: (i) prefix/suffix recognition (which masks certain semanticcomponents), (ii) text segmentation (which provides improved recall fornon-white space languages), (iii) component segmentation (which breakswords into linguistic constituents, e.g., paragraph, sentence, word,compound word, URLs, etc.), (iv) normalization (for handling inflectiondifferences (mouse/mice), (v) variant spelling matching (e.g.,Color=Colour), and (vi) lemmatization which matches conceptually similarwords (demonstrate′=‘demonstration’ but does not match ‘demon’).

14. The software automatically builds searchable metadata indices basedupon policy templates for particular data sources or classes as data isinserted. It allows for the creation of multiple indices to groupsimilar data for rapid searches and retrieval. The software allows forthe scanning of existing data for inclusion into the metadata indices.The metadata is gathered from sources controlled via policy templates.Compliance specific features such as keyword controls, attachmentscanning plus indexing, and linking of receipts, etc., for email and IMare provided along with other features.

15. The software has the ability to dynamically transform data uponretrieval. Using the taxonomy and ontology information contained in aknowledge encyclopedia, the software combines this information withspecific transformation rules to convert the data as necessary to meetthe requirements for the information to be utilized by the retrievingapplication.

16. The software supports a multiple language ability for servinginternational enterprises that exchange data freely across borders. Thesearch engine supports queries with intelligence to improve therelevancy of the search results across different languages.

17. The software uses an object-oriented digital repository. This allowsintegration between the application logic and the archived data to bethe most transparent possible, this is known as transparent persistence.The ability to keep the persistence and application logic in the sameobject-oriented paradigm simplifies modeling, design tool requirements,and visualization of the system architecture and design. The persistingmay apply not only to data but also the entire object, including itsimplemented behavior. This supports calling the persisted object'smethods on a remote database server, thereby providing advantages inscalability and distribution. In a relational database, by contrast,stored procedures or COM objects would need to be implemented toaccomplish this result, forcing some duplication of coding efforts or amore awkward architecture. The present invention reduces developmenttime by allowing developers to focus on object persistence, not thedecomposition of objects to rows and parent/child relationships in oneor more tables. In most cases, a developer simply saves an object to therepository.

18. The software utilizes a highly scalable architecture that providesthe ability to handle the demands of enterprise applications anddistributed native data access. The software uses optimization ofqueries and transparent dynamic caching methods to deliver users anon-disruptive, responsive approach to enterprise knowledge search andretrieval. The software scales by the simple addition of more agents tohandle increased transactional loads. The agents utilize network trafficmonitoring, node loading measures, and transaction counts creating afeedback loop that enables intelligent decision making about when, whereand if additional agents are needed. The software can also generallythrottle operations in order to maintain throughput on other criticalapplications operating in the network. The performance control mechanismis also capable of throttling only certain types of operations basedupon type, user, group, data of day, node, network segment, etc.

19. The software is hardware/software platform neutral or agnostic. Thesoftware runs on mainframes to embedded platforms and supports operationon z/OS, z/VM, OS/400, AIX, Linux, Solaris, Windows and etc.

20. The software provides for support of policy or template-basedcontrol of data retention. It also uses policies to control dataaffinity or the ability to direct selected data types to particularstorage types or physical locations. The policy allows for thereplication of data among locations and storage types. For example,using the metamorphose ability with replication it is possible toreplicate database tables with unlike structures by establishing policyrules on how to convert the data.

21. The software leverages the abilities and functionality of thedatabases and storage technology that it interfaces with duringvirtualization of data sources. The indexing and storage processes canbe tasked to the database and storage technology that delivers the bestperformance for that data or information type.

22. The software uses available technologies to locate and retrieveknowledge from the repository. The software's unique architecture allowsthe user to leverage the data mining abilities, unique search abilitiesand other features of the database and applications it utilizes as datasources. The software includes features that allow the specification ofexternal programs, routines, etc. for specific data search problems. Forexample, the software can be extended to annotate and process videostreams real-time to create easily searchable video knowledgerepositories. The default search methods implemented in the software usethe latest ranking and fuzzy search technology to enable the user thegreatest ease of use.

23. The software supports basic and advanced security modes ofoperation. From simple password based protection to advanced DigitalRights Management methods on individual data items fields. The softwarealso uses compressed, encrypted communications (selectable by policy)for movement of data within the archive or between storage locations.This is also used to create a true chain of evidence for data relatingto compliance. The chain of evidence provides a secured log of all typesof access attempted or performed on any information deposited within therepository.

24. The software supports XML open standards and eliminates the risk ofapplication obsolescence. Data remains accessible even after theapplication is retired. In addition, the software will metamorphose dataper a defined policy during retrieval to support the current version ofan application or other data formatting requirements of a retrievaldestination. The software is in compliance with ISO 14721 and DoD 5015.2for Digital Archives.

25. The software provides transparency such that all data sources appearand act as one data source. The software can access archived datathrough existing application interfaces, online, and in real time. Inaddition, offline data requests are queued via librarian utilities orvia operator interfaces and managed without user intervention. Off-line(long-term archived items) can be queued for retrieval and thenpresented to the requesting user once they have placed on-line either inthe on-line archive or in a temporary cache per policy.

26. The software allows data items to be versioned in the repository.This keeps a complete audit trail of the data item thought all of itschanges. Policies are used to determine the version number allowed,expiration dates, always keep the original and other options. Compliancedata is preferably never modified, and CRC or MD5 signature methods areused on the data to ensure this does not happen. Encryption via otheralgorithms is also available.

B. System Architecture

Referring now to FIG. 1, a flow diagram is shown depicting knowledgeflow or data flow through the repository of the present invention.Corporate compliance data from different sources within an enterprise isgenerated from a source application, device or database (e.g., VoIPapplication 102, e-mail application 104, statement/report application106, image database 108, transaction database 110, internet formsdatabase 112, or video database 114) and deposited to storage repository100 using XML based data descriptions and policies. A list of differentsource data formats that may be generated by source applications anddeposited into repository 100 are shown in Appendix A. The differentdata sources within the enterprise may include structured databases andunstructured databases.

Referring still to FIG. 1, storage areas 120, 122 and 124 are used forstoring data in repository 100. NAS/SAN arrays, databases or any otherdevice may be used for storage. Data that has been deposited intorepository 100 may also be withdrawn. Unlike other digital repositoriestasked for compliance issues, the software of the present invention iscapable of returning the data to the source application, device ordatabase. This allows users to access and work with data in repository100 utilizing an interface on a native application (i.e., an interfaceon application/device/database 102, 104, 106, 108, 110, 112 or 114 suchas, e.g., Lotus Notes or Microsoft Exchange in the case of e-mailapplication 104), thereby reducing or eliminating training for a newprogram.

FIG. 2 is a block diagram showing the program components and logicalstorage areas used for implementing the search technology of the presentinvention. The architecture shown includes four program components (datacollector agents 202, data storage agents 204, management and controlagents 206, and process flow management agent 208) and utilizes sixdifferent logical storage areas (discussed below) to perform itsfunctions. FIG. 2 shows the functional deployment in a network of theprogram and storage area components of the present invention. Multipleinstances of each the components may exist in a network to providescalability, reliability and accessibility to the data in repository100. The six logical storage areas used by the architecture are:

1. An Evidence Chain Repository (ECR) 210, which holds an audit log ofall activities for a given item deposited into repository 100. This logalso includes the activities of the data source associated with a givenitem of data, such as when the server is taken down or purges are run,etc.

2. A MetaTag Repository (MTR) (Knowledge Encyclopedia) 212, which holdsXML based descriptions of the various native formats of the datasupplied to repository 100 by sources 102, 104, 106, 108, 110, 112. Inone embodiment, MTR 212 also holds (i) security templates/policies, (ii)processing templates/policies, (iii) indexing rules/requirements, (iv)taxonomy and ontology of the enterprise data, (v) data metamorphosisrules, (vi) workflow processing triggers, (vii) data correlation rules,and (viii) storage area affinity and control policies.

3. A MetaData Repository (MDR) 214, which holds indexes to the datastored in repository 100 or registered with repository 100 for purposesof searching.

4. An Object Data Repository (ODR) 216, which holds stored data.

5. A Workflow Repository (WCR) 218, which holds workflow process rulesfor targeted data classes.

6. An Evidence Data Repository (EDR) 220, which holds data linked andkept separate during a workflow process for purposes of isolation oreasy retrieval.

Referring now to FIG. 3, a flow diagram is shown illustrating varioussteps performed by the search technology of the present invention. Instep 302, the search technology of the present invention is invokedthrough a native application associated with one of sources 102, 104,106, 108, 110, 112, which has been modified to include a SearchInterface for invoking the search functionality of the present inventionin order to simultaneously access all of the plurality of data sourcesassociated with the enterprise. Exemplary screen shots illustrating anative application (Microsoft Outlook in the example shown) which hasbeen modified (e.g., using a plug-in) to include the Search Interfacefor accessing the search functionality of the present invention areshown in FIGS. 4-6.

In step 304, the user enters search parameters (for searching all of theplurality of data sources associated with the enterprise) into theSearch Interface. In one embodiment, the search parameters representsearch terms and a search strategy designed to elicit informationresponsive to a legal discovery request directed at an enterprise. Inthis embodiment, the legal discovery request corresponds to a documentsubpoena directed to the enterprise or a request for production ofdocuments served on the enterprise in litigation. Next, in step 306, thesearch parameters are provided to metadata storage agent 204. In step308, metadata storage agent 204 returns to the user a search resultslist representative of data that (i) matches the search request, and(ii) which the user is authorized to access. An example of such a searchresults list is shown in FIG. 6.

In step 310, the user is presented with an option to narrow the searchcriteria by entry of additional parameters. If the user opts to narrowthe search criteria, the additional parameters are input by the user viathe Search Interface, and in step 312, the additional search parametersare provided to metadata storage agent 204. In step 314, metadatastorage agent 204 returns to the user a search results listrepresentative of data that (i) matches the narrowed search request, and(ii) which the user is authorized to access. Steps 312-314 may berepeated in order to successively narrow the search, as desired by theuser.

In step 316, the user can display an item corresponding to one of theentries on the search results list (see FIG. 6) by clicking on the itemvia the Search Interface. In response to a user “clicking on” an item inthe search results list for display, the Search Interface accesses themetadata storage agent 204 (step 318), which in turn returns thelocation or locations of source data (which may be from data sources102, 104, 106, 108, 110, 112, 114 and/or 100 and/or 120,122,124)corresponding to the item selected by the user (step 320) and a displaymethod associated with the source data (step 322) (e.g., the identify ofan application required to display the data). In step 324, the SearchInterface uses the data location information and the display methodinformation to display the source data to the user. In the event thatthe native application used for implementing the Search Interface lacksfunctionality required for displaying the selected source data, anapplication required to view the selected search result is automaticallylaunched by the Search Interface and used for displaying the selectedsource data to the user.

In step 326, the user can select an item corresponding to one of theentries on the search results list (see FIG. 6) in order to save thedata to a storage medium for distribution. This media is not part of therepository, but a writable storage media attached to the user's computeror network that they have security authorization to write to. An examplewould be an in-house corporate counsel locating all activities of agiven broker and then using this facility to prepare a CD-ROM to send toexternal counsel.

In step 328, the Search Interface accesses metadata agent 204 which inturn returns the location or locations of source data (which may be datasources 102, 104, 106, 108, 110, 112, 114 and/or 100 and/or 120,122,124)corresponding to the item selected by the user (step 330) and thestorage method currently used for storing the source data (step 332). Instep 334, the Search Interface uses the data location information andthe storage method information to access the source data and then storethe data on a storage medium selected by the user.

A plurality of taxonomies is provided within MetaTag Repository 212.Each of the taxonomies describes a structure of a structured databasecorresponding to one of the data sources (102-112). An ontology is alsoprovided within MetaTag Repository 212, based at least in part on thetaxonomies. The ontology describes data relationships between theplurality of databases associated with the enterprise (e.g., datasources 102-112). When a search request is received from the user instep 306 (or step 312), the ontology and the taxonomies are accessed andused to search the plurality of source databases associated with theenterprise.

C. Data Metamorphosis

It often happens that a current software application (available in acurrent version) was previously available in an old version, where thecurrent version of the software stores data in a current data storageformat and the old version of the software previously stored the data inan old data storage format which is different from the current datastorage format. The software of the present invention includes datametamorphosis' functionality which supports usage of data stored in theold data storage format with the current version of the software. Theinvention includes an XML definition for each of a plurality of objectclasses used to store data in the old data storage format and the newdata storage format, and data format rules for each XML definition. Whenthe current version of the software recalls data in the old data storageformat, at least some of the XML definitions and format rules are usedto dynamically convert the data in the old storage format to the currentdata storage format, thereby allowing usage of the data in the oldstorage format by the current version of the application.

Table I below shows a sample XML definition for customer order datastored by an old version (e.g., version 1) of an ordering systemsoftware application, and Table II below shows a sample XML definitionfor customer order data stored by a current version (e.g., version 7) ofthe ordering system software application. The present invention includesa graphical user interface (shown in FIGS. 7-11) for generating the W3Corganization XML definitions. These definitions in conjunction with code(format rules) are stored in MetaTag Repository 212, and provide thepresent invention with the ability to dynamically alter data formatsduring the retrieval of source data from storage locations.

TABLE I Sample XML Definition Of A Customer Order From Version 1 Of TheOrdering System <xsd:schema xmlns:xsd=″http://www.w3.org/2001/XMLSchema″> <xsd:annotation> <xsd:documentationxml:lang=″en″> OrderSystem Version 1 Sample Definitiion </xsd: documentation></xsd:annotation> <xsd:element name=″customerOrder″type=″customerOrderType″/> <xsd:element name=″comment″type=″xsd:string″/> <xsd:complexType name=″customerOrderType″> <xsd:sequence>  <xsd:element name=″shipTo″ type=″USAddress″/> <xsd:element name=″billTo″ type=″USAddress′/>  <xsd:elementref=″comment″ minOccurs=″0″/>  <xsd:element name=″items″ type=″Items″/></xsd:sequence> <xsd:attribute name=″orderDate″ type=″xsd:date″/></xsd:complexType> <xsd:complexTypename=″USAddress″> <xsd:sequence><xsd:element name=″name″ type=″xsd:string″/> <xsd:element name=″street″type=″xsd:string″/> <xsd:element name=″city″ type=″xsd:string″/><xsd:element name=″state″ type=″xsd:string″/> <xsd:element name=″zip″type=″xsd:decimar′/> </xsd:sequence> <xsd:attribute name=″country″type=″xsd:NMTOKEN″ fixed=″US″/> </xsd:complexType> <xsd:complexTypename=″Items″> <xsd:sequence> <xsd:element name=″item″ minOccurs=″0″maxOccurs=″unbounded″>  <xsd:complexType>  <xsd:sequence> <xsd:elementname=″productName″ type=″xsd:string″/> <xsd:element name=″quantity″><xsd:simpleType> <xsd:restrictionbase=″xsd:positiveInteger″> <xsd:maxExclusive value=″100″/>  </xsd:restriction> </xsd:simpleType></xsd:element> <xsd:element name=″USPrice″ type=″xsd:decimal”/> <xsd:element ref=″comment″ minOccurs=″0″/> <xsd:element name=″shipDate″type=″xsd:date″ minOccurs=″0″/> </xsd:sequence> <xsd:attributename=″partNum″ type=″SKU″ use=″required″/> </xsd:complexType></xsd:element>  </xsd:sequence> </xsd: complexType> <!-- Stock KeepingUnit, a code for identifying products --> <xsd:simpleType name=″SKU″><xsd:restrictionbase=″xsd:string″> <xsd:pattern value=″\d {3} -[ A-Z]{2}”/> </xsd:restriction>  </xsd:simpleType> </xsd:schema>

TABLE II Sample XML Definition Of A Customer Order From Version 7 Of TheOrdering System <xsd:schemaxmlns:xsd=″http://www.w3.org/2001/XMLSchema″> <xsd:annotation><xsd:documentationxml:lang=″en″> Order System Version 7 SampleDefinitiion </xsd:documentation> </xsd:annotation> <xsd:elementname=″customerOrder″ type=″customerOrderType″/> <xsd:elementname=″comment″ type=″xsd:string″/><xsd:complexTypename=″customerOrderType″> <xsd:sequence><xsd:elementname=″customerNumber″> <xsd:simpleType><xsd:restrictionbase=″xsd:positiveInteger″>  <xsd:maxExclusivevalue=″9999″/> </xsd:restriction>  <xsd:element ref=″comment″minOccurs=″0″/>  <xsd:element name=″items″ type=″Items”/> </xsd:sequence> <xsd:attribute name=″orderDate″ type=″xsd:date″/> </xsd:complexType> <xsd:complexType name=″Items″> <xsd:sequence> <xsd:element name=″item″ minOccurs=″0″ maxOccurs=″unbounded″><xsd:complexType>  <xsd:sequence> <xsd:element name=″productName″type=″xsd:string″/>  <xsd:element name=″quantity″> <xsd:simpleType><xsd:restrictionbase=″xsd:positiveInteger″>  <xsd:maxExclusivevalue=″100”/> </xsd:restriction>  </xsd: simpleType> </xsd:element> <xsd:element name=″USPrice″ type=″xsd:decimal”/>  <xsd:elementref=″comment″ minOccurs=″0”/> <xsd:element name=″shipDate″type=″xsd:date″ minOccurs=″0”/>  </xsd:sequence> <xsd:attributename=″partNum″ type=″SKU″ use-“required”/>  </xsd:complexType></xsd:element>  </xsd:sequence> </xsd:complexType> <!-- Stock KeepingUnit, a code for identifying products --> <xsd:simpleType name=″SKU″><xsd:restriction base=″xsd:string″> <xsd:pattern value=″\d {3} -[A-Z]{2}”/> </xsd:restriction>  </xsd:simpleType> </xsd:schema>

The XML schemes described in Tables I and II layout the actual databaseschema for the ordering system. In version 7, the schema for thedatabase has been altered to reference a second database that containsthe customer information. This requires that any access to version 1data be converted to the new format in order to be used in the sameapplication programs. This is accomplished by adding a method within thedata definition of the schema 1 object description contained in theMetaTag Repository 212. This method is illustrated in Table III belowand added based upon on XML definitions and mapping created using thegraphical user interface of FIGS. 7-11.

TABLE III <xsl:metamorphosis ; Define DataMetamorphosisxmlns:xsl=″http://www. w3.org/1999/XSL/Transform″version=″1.0″> <xsl:condition current Version=″1″, targetVersion=″7″/> ;Define Trigger Condition <xsl:template match=″results″>  ; Define Method<xsl:for-each select=″$shipto::name″>  ;Key to search customers<xsl:databaseQuery, customerMaster, key=″name″, $Select/> ; Lookup Name<xsl:RemoveFields> : Remove Ver 1 Fields <xsl:element name=″shipTo″type=″USAddress”/> <xsl:element name=″billTo″ type=″USAddress”/> </xsl:RemoveFields> <xsl:ReplaceFields> : Add Version 7 Fields <xsd:element name=″customerNumber″ source=″customerMaster: :CustID> </xsl:ReplaceFields> </xsl:for-each> </xsl:template> </xsl:transform>

D. Object-Oriented Reactive Secure Collaboration

As mentioned above in connection with FIG. 3, in response to a searchrequest, metadata storage agent 204 returns to the user a search resultslist representative of data that (i) matches the narrowed searchrequest, and (ii) which the user is authorized to access. (Step 314). Inone embodiment, the user's authority to access (and/or share) data isdetermined in the context of a collaboration environment that changesdynamically based on the occurrence of events external to the datacollaboration environment. The collaboration environment is defined toinclude roles, activities and external event specifications. Each roledefines data access privileges granted to a user during a session, eachactivity defines with whom the user can share data, and each externalevent specification defines an event external to the collaborationenvironment which must occur before an activity is permitted for adefined role during a session. Data sharing privileges granted to a userchange dynamically in response to the occurrence of an external eventidentified in one of the defined external event specifications. Table IVbelow sets forth definitions for roles, activities and external eventspecifications, in accordance with specific examples of the invention.

Name Description Role This names the ′role′ of the user being grantedaccess Specification to the information contained in the system. A givenindividual can be assigned several ′roles′. For example, an individualmay be assigned the following roles: administrator, auditing, security;while another individual may simply be assigned the role: user. ActivityControl - Complete access to system information, Specification includingdefining security for others for the information item, and all otherfunctions Read - user only to read information and not alter any.Write - user may write new information, but not modify existing or readexisting information Modify - User may read and alter existinginformation, but not create new information Meta - User may access onlymetadata for the information, but not the source information Delete -User may delete information Audit - Read the audit log concerningactivities for the information Event Defines an external ′condition′such as a Defense Specification Department ′DEFCON′ (Defense Condition).DEFCON 1 is the highest alert level (war) with DEFCON 5 being a peacefulalert level. Any ′conditions′ can be defined to cover informationsharing activities. For example, an event can be defined to permitmilitary or civilian agencies that otherwise do not share data toautomatically share during emergencies or other defined events/conditions.

In a further example, the event specification of the collaborationenvironment is defined based on the four possible events (set forth inTable V below) and the collaboration environment set-up is shown inTable VI below.

TABLE V Event Description Normal Information and other security perdefined policy Crime Alert A crime has been committed, informationsharing allowing coordination among local law official is now allowedDisaster Alert A natural event has occurred resulting in loss of lifeand property, Information sharing among all levels of government withlimited media access is now allowed Attack Alert An attack has occurredresulting in loss of life and property, Information sharing among alllevels of government with some media access is now allowed. Some othergovernment levels also have CONTROL level access to allow enable datasharing on a as needed basis.

TABLE VI Event Activity Role Specification Information Type LevelExample Reactive Collaboration Setup Administrator Normal ChemicalSensor Status Control Video Surveillance Data Control Personnel StatusControl Tollbooth/Tunnel Bridge Control License Scans PublicAnnouncements Control Crime Chemical Sensor Status Control VideoSurveillance Data Control Personnel Status Control Tollbooth/TunnelBridge Control License Scans Public Announcements Control DisasterChemical Sensor Status Control Video Surveillance Data Control PersonnelStatus Control Tollbooth/Tunnel Bridge Control License Scans PublicAnnouncements Control Attack Chemical Sensor Status Control VideoSurveillance Data Control Personnel Status Control Tollbooth/TunnelBridge Control License Scans Public Announcements Control ResponderNormal Chemical Sensor Status Meta Personnel Video Surveillance DataMeta Personnel Status Meta Tollbooth/Tunnel Bridge Meta License ScansPublic Announcements Read Crime Chemical Sensor Status Meta VideoSurveillance Data Read Personnel Status Meta Tollbooth/Tunnel BridgeRead License Scans Public Announcements Read Disaster Chemical SensorStatus Meta Video Surveillance Data Read Personnel Status Read ExampleReactive Collaboration Setup Tollbooth/Tunnel Bridge Read License ScansPublic Announcements Read Attack Chemical Sensor Status Read VideoSurveillance Data Read Personnel Status Read Tollbooth/Tunnel BridgeRead License Scans Public Announcements Read Local Agency NormalChemical Sensor Status Modify, Write Video Surveillance Data Modify,Write Personnel Status Modify, Write Tollbooth/Tunnel Bridge Modify,Write License Scans Public Announcements Modify, Write Crime ChemicalSensor Status Modify, Write Video Surveillance Data Modify, WritePersonnel Status Modify, Write Tollbooth/Tunnel Bridge Modify, LicenseScans Write Public Announcements Modify, Write Disaster Chemical SensorStatus Modify, Write Video Surveillance Data Modify, Write PersonnelStatus Modify, Write Tollbooth/Tunnel Bridge Modify, License Scans WritePublic Announcements Modify, Write Attack Chemical Sensor Status Modify,Write Video Surveillance Data Modify, Write Personnel Status Modify,Write Tollbooth/Tunnel Bridge Modify, License Scans Write PublicAnnouncements Modify, Write Other Agency Normal Chemical Sensor StatusNone Video Surveillance Data None Personnel Status None Tollbooth/TunnelBridge None License Scans Public Announcements Read Crime ChemicalSensor Status None Video Surveillance Data Read Example ReactiveCollaboration Setup Personnel Status None Tollbooth/Tunnel Bridge ReadLicense Scans Public Announcements Read Disaster Chemical Sensor StatusRead Video Surveillance Data Read Personnel Status Read Tollbooth/TunnelBridge Read License Scans Public Announcements Read Attack ChemicalSensor Status Control Video Surveillance Data Control Personnel StatusControl Tollbooth/Tunnel Bridge Control License Scans PublicAnnouncements Control News Media Normal Chemical Sensor Status NoneVideo Surveillance Data None Personnel Status None Tollbooth/TunnelBridge None License Scans Public Announcements Read Crime ChemicalSensor Status None Video Surveillance Data None Personnel Status NoneTollbooth/Tunnel Bridge None License Scans Public Announcements ReadDisaster Chemical Sensor Status None Video Surveillance Data NonePersonnel Status None Tollbooth/Tunnel Bridge None License Scans PublicAnnouncements Read Attack Chemical Sensor Status None Video SurveillanceData None Personnel Status None Tollbooth/Tunnel Bridge None LicenseScans Public Announcements Read

E. Data Collector Agent

Referring now to FIG. 13, a block diagram is shown illustrating thecomponents of a data collector agent 202 of the present invention. Eachdata collector agent 202 includes a first portion 202 a which iscustomized to the data source associated with the agent; an agent APIportion 202 b, and an interface portion 202 c for interfacing with otheragents.

Referring now to FIG. 14, a flow diagram is shown illustrating stepsperformed by the data collector agent 202. In step 1402, the agentstarts-up and begins initialization. In step 1404, data collection agent202 sends a broadcast message to request a connection to a data storageagent 205 and, in step 1406 data collector agent waits for a connectionwith data storage agent 205. The storage agent virtualizes the storagedestinations for the system. The storage agent uses the MetaTagRepository, as the source for its configuration and management. Thestorage agent stores and retrieves data to and from the Object DataRepository and OCR. This component provides reliability and scalabilityto the data storage function of the invention by recovering fromcommunications outages, network-partitioning events, and server crashesusing rules defined in the MetaTag Repository. The metadata agentmanages the MetaData Repository via the information in the MetaTagRepository. The metadata agent maintains the integrity of the metadatastructure and ensures the ‘freshness’ of the metadata at all levels ofthe hierarchy.

Referring again to FIG. 14, once the connection is established betweenthe data collector agent and the data storage agent 205, data structuredefinitions, security and auditing parameters (corresponding to the datasource associated with the data collector agent 202) are retrieved fromMetaTag repository 212 (step 1408). In step 1410, data collector agent202 establishes a connection to the data source associated with theagent (e.g., source 102), and in step 1412 extracts metadata valueswhich may include, without limitation, major indicies of databases, worddictionaries for unstructured data, or time code annotations for videostreams from the data source associated with agent 202. In step 1414,the agent 202 transmits the collected metadata values to a data storagemanager for collection in MetaData repository 214. If the user hasrequested storage of source data in repository 100 (step 1416), thenagent 202 transmits source data (from the data source associated withagent 202) to a data storage manager for collection in object datarepository 216. If auditing of the source associated with agent 202 hasbeen specified, then in steps 1420 and 1422, the agent 202 collectsauditing data from the data source associated with agent 202, andtransmits the audit data to a data storage manager for collection inevidence chain repository 220. In one embodiment of steps 1420 and 1422,agent 202 and evidence chain repository 220 log various events thatoccur with respect to the application associated with the data sourcesuch as, e.g., server status, server operations performed, and networkstatus, application changes, stops and starts, when data is accessed, bywho, when and what operations was attempted. The evidence chainrepository also collects information from the data storage agents 204when information is accessed within the repository 100. This includesthe type of access (read, write, etc.), who accessed and the time.

FIG. 15 is a block diagram illustrating the object transmission formatused by the data collector agent 202 for transmitting information to thedata storage and metadata agents 204.

F. Improving Data Availability by Fragmenting Data Across Network Nodes

In one embodiment, availability of a data object is improved in thepresent invention using a fragmented networked storage method thatexploits the statistical stability of a large number of storage points.The concept improves retrievability of a data object over simplereplication and is applicable to networks where nodes enter and exit thenetwork in a manner that is unpredictable. In this storage method, thenumber of segments to break a data object into is specified. Thus, iftwo fragments (backups) are specified and 32 replicates exist for eachfragment, this would correspond to a 2-times storage overhead.

Possible availability of data object is computed in accordance with theequation below:

$P_{Q} = {\sum\limits_{i = 0}^{n - m}\frac{\begin{pmatrix}M \\i\end{pmatrix}\begin{pmatrix}{N - M} \\{n - i}\end{pmatrix}}{\begin{pmatrix}N \\n\end{pmatrix}}}$

where, P_(Q) is the probability that a given Data Object will beavailable, n is the total number of data fragments, m is the minimumcount of data fragments needed to reconstruct the data object, N is thetotal number of network storage positions (network nodes with storageand storage agents 204), and M is the count of networked storagepositions unavailable.

The probability that a given data object will be available (retrievable)is equal to the number of ways that unavailable fragments can bearranged on unreachable networked storage positions multiplied by thenumber of ways in which available fragments can be arranged on reachablenetworked storage points, divided by the total number of ways allfragments can be stored on all networked storage positions. Using thismethod of fragmented storage, 2 simple replicated copies yield anavailability probability of 99%, while 2 fragments stored via 32sub-fragments yield an availability probability of 99.99998%.

Using the distributed nature of the agents described above,implementation of this fragmentation method becomes possible. Each datastorage agent 205 of the network becomes a possible storage point (ornode) of one of the fragments of the data object that must be stored ina highly reliable fashion and secure. Security of the data is increasedsince only a fragment of the total information piece is stored at anygiven location. This creates a virtual data shredder′ that isreversible. FIG. 16 illustrates steps performed for fragmenting data inorder to improve availability in accordance with the present invention.

The MetaTag Repository 212 for an object class has fields that denotethe number of replicates and fragments for each replicated piece. Thedata manager agent 206 then handles the distribution of the data objectacross the nodes required to meet the specifications. Each fragment isassigned a unique identification which is held in MetaData repository214. The metadata repository 214 is replicated in multiple locations toassure its availability. The original data object is not deleted untilverification of that data is stored according to specified requirementsof the object class for replication and fragmentation. The fragmentedobject store object header (shown in FIG. 17) is structured similar tothe transmission object of the agent system. As shown in FIG. 17, eachfragment of data includes a header with control information thatspecifies how the fragment connects with other fragments stored in thenetwork. The Source Data Unique Identifier in combination with theReplicate ID and the Fragment ID creates a unique identifier for eachfragmented piece of the data object (FIG. 16). For a given data object,the MetaTag Repository 212 specifies the number of replicates(RC-replicate count) and the number of fragments for each replicate(FC-fragment count). To recreate the entire data object a collection ofthe fragments must be accessed via the data storage agents 204. Acomplete data object requires all fragments 1 to FC of any replicate 1to RC matching the Source Data Unique Identifier.

The object can be reassembled from the fragments if the metadatarepository 214 is destroyed or unavailable by scanning each object datarepository 216 instance and reading the header replicate/fragment IDs. Acomplete metadata entry can be constructed to read the entire dataobject once sufficient nodes have scanned their object data repositories216. The process is reversible even with deliberate tampering bydestruction of the metadata indices which point to the data locations.

Finally, it will be appreciated by those skilled in the art that changescould be made to the embodiments described above without departing fromthe broad inventive concept thereof. It is understood, therefore, thatthis invention is not limited to the particular embodiments disclosed,but is intended to cover modifications within the spirit and scope ofthe present invention as defined in the appended claims.

APPENDIX A ACT! (4.02-6) ADO Adobe Acrobat (PDF) ANSI Text ASCII SourceCode ASCII Text ASCII Transcript AutoCAD BDE Btrieve Comma SeparatedValues (CSV) CompuServe E-mail

dBASE (III, IV)

Display Write (4, 5) Eudora Excel (2.0-2000, XP, 2003) Firefox FlashFoxPro (2,2.5) Framework 3 FTP HTML Raw Codes HTML Text Only HTTP IBMDCA/RFT IBM DB2 IBM FFT IFilters Informix Interbase JPEG EXIF Lotus 123(3, 4, 5 96, 97) Lotus Ami Pro Lotus cc:Mail Lotus Manuscript LotusNotes Lotus WordPro (2.0, 3.0, 97) MASS-11PC Microsoft Access (2000, XP,2003) Microsoft Binders Microsoft EML Microsoft Excel (2.0-5.0, 95, 97,2000, XP, 2003) Microsoft Exchange

Microsoft Internet Explorer cache

Microsoft Internet Mail Microsoft HTML Help (CHM) Microsoft MHTMicrosoft MSG Microsoft Outlook (97, 98, 2000, XP, 2003) MicrosoftOutlook Express (4, 5, 6) Microsoft PowerPoint (4.0, 95, 97, 2000, XP,2003) Microsoft Personal Folders Microsoft Public Folders Microsoft RTF(Rich Text Format) Microsoft SQL Server Microsoft Visio Microsoft WordDOS (2.0-5.5) Microsoft Word (2.0-6.0, 95, 97, 2000, XP, 2003) MicrosoftWordpad Microsoft Works (1.0, 2.0, 3.0, 4.0) Mozilla MP3 Multimate (3.0,4.0, 5.0, Advantage) My SQL Netscape Mail ODBC Open Access II OpenOfficeOracle Paradox (3.x, 4.x, 2000) Professional Write Public MAPI Q&A WriteRevelation

Sendmail mailbox

SGML Text Only Spreadsheets SQL StarOffice Sybase Thunderbird TIFFUniplex

vCardVentura publisher mark-up

VIM Wang IWP Wang WP PLUS Windows Write (1.0, 2.0, 3.0) Word Perfect4.2, 5.0, 6, 7, 8, 10, 2000) Wordstar (3, 4, 5, 6, 2000) XML XYWrite

ZIP files

1. In a software application that is currently available in a currentversion and which was previously available in an old version, whereinthe current version of the software stores data in a current datastorage format and the old version of the software previously stored inan old data storage format which is different from the current datastorage format, a data metamorphosis method that supports usage of datastored in the old data storage format with the current version of thesoftware, the method comprising: (a) providing an XML definition foreach of a plurality of object classes used to store data in the old datastorage format and the new data storage format; (b) providing dataformat rules for each XML definition; and (c) when the current versionof the software recalls data in the old data storage format, using atleast some of the XML definitions and format rules to dynamicallyconvert the data in the old storage format to the current data storageformat, thereby allowing usage of the data in the old storage format bythe current version of the software.
 2. In a software application thatis currently available in a current version and which was previouslyavailable in an old version, wherein the current version of the softwarestores data in a current data storage format and the old version of thesoftware previously stored in an old data storage format which isdifferent from the current data storage format, a data metamorphosissystem that supports usage of data stored in the old data storage formatwith the current version of the software, the system comprising: (a) atleast one repository that stores an XML definition for each of aplurality of object classes used to store data in the old data storageformat and the new data storage format and data format rules for eachXML definition; and (b) a software agent, coupled to the at least onerepository, that uses at least some of the XML definitions and formatrules to dynamically convert the data in the old storage format to thecurrent data storage format when the current version of the softwarerecalls data in the old data storage format, thereby allowing usage ofthe data in the old storage format by the current version of thesoftware.